<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <title>bindstyle</title>
  <style>
    .active {
      width: 200px;
      height: 100px;
      text-align: center;
      line-height: 100px;
      /* 为了实现让文字居中 */
      background: green;
    }

    .text-danger {
      margin-top: 15px;
      flood-color: wheat;
      background: red;
    }

    .base {
      width: 200px;
      height: 100px;
      text-align: center;
      line-height: 100px;
      /* 为了实现让文字居中 */
      background: blue;
    }
  </style>
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>

<body>
  <div id="app">
    <!-- 1. class 属性绑定 -->
    <!-- 实例中将 isActive 设置为 true 显示了一个绿色的 div 块，如果设置为 false 则不显示 -->
    <!-- <div class="active"></div> -->
    <div v-bind:class="{ 'active': isActive }">bind_class</div>

    <!-- text-danger 类背景颜色覆盖了 active 类的背景色： -->
    <!-- <div class="static active text-danger"></div> -->
    <div class="static" v-bind:class="{ 'active' : isActive , 'text-danger' : hasError }">bind-staic-class</div>
    <!-- text-danger 类背景颜色覆盖了 active 类的背景色： -->

    <!-- 我们也可以直接绑定数据里的一个对象： -->
    <div v-bind:class="classObject">bind-classObject</div>

    <!-- 我们也可以在这里绑定返回对象的计算属性。这是一个常用且强大的模式： -->
    <div v-bind:class="classObject2">bind-classObject2</div>


    <!-- 2. 数组语法 -->
    <!-- 我们可以把一个数组传给 v-bind:class ，实例如下 -->
    <!-- <div class="active text-danger"></div> -->
    <div v-bind:class="[activeClass, errorClass]">bind-数组</div>

    <!-- 我们还可以使用三元表达式来切换列表中的 class ： -->
    <div v-bind:class="[errorClass , isActive ? activeClass : '']">三元表达式</div>

    <!-- 3. Vue.js style(内联样式) -->
    <!-- 我们可以在 v-bind:style 直接设置样式： -->
    <!-- <div style="color: green; font-size: 30px;">菜鸟教程</div> -->
    <div v-bind:style=" { color : activeColor , fontSize : fontSize + 'px' }">内联样式&菜鸟教程</div>

    <!-- 也可以直接绑定到一个样式对象，让模板更清晰： -->
    <div v-bind:style="styleObject">styleObject&菜鸟教程</div>

    <!-- v-bind:style 可以使用数组将多个样式对象应用到一个元素上： -->
    <!-- 注意：当 v-bind:style 使用需要特定前缀的 CSS 属性时，如 transform ，Vue.js 会自动侦测并添加相应的前缀。 -->
    <div v-bind:style="[baseStyles,overridingStyles]">styleArray&菜鸟教程</div>

  </div>
  <script>
    new Vue({
      el: "#app",
      data: {
        isActive: true,
        hasError: true,
        classObject: {
          active: true,
          'text-danger': true
        },
        error: {
          value: true,
          type: 'fatal'
        },
        activeClass: 'active',
        errorClass: 'text-danger',
        activeColor: 'green',
        fontSize: 30,
        styleObject: {
          color: 'green',
          fontSize: '30px'
        },
        baseStyles: {
          color: 'green',
          fontSize: '30px'
        },
        overridingStyles: {
          'font-weight': 'bold'
        }
      },
      computed: {
        classObject2: function () {
          return {
            base: true,
            active: this.isActive && !this.error.value,
            'text-danger': this.error.value && this.error.type === 'fatal'
          }
        }
      }
    })
  </script>



</body>

</html>